
#ifndef __CE_GFX_IEFFECTTECHNIQUE_H__
#define __CE_GFX_IEFFECTTECHNIQUE_H__

#include <iobject.h>
#include <gfx/enum.h>
#include <gfx/programparametername.h>

struct iProgram;
struct iProgramParameter;

/**
 * \addtogroup shading
 * @{
 */


/**
 * @brief Interface for the collection of several shaders for different render passes.
 */
struct iEffectTechnique : public iObject
{

  virtual void SetProgram (ceRenderPass pass, iProgram* program) = 0;
  virtual iProgram* GetProgram (ceRenderPass pass) = 0;

	virtual iProgram* BeginPass (ceRenderPass pass) = 0;
  virtual void EndPass (ceRenderPass pass) = 0;


};

/**
 * @}
 */

#endif /* ! __CE_GFX_IEFFECTTECHNIQUE_H__ */

